package cate.game.play.skill.passive.fairy;

import cate.common.util.XT;
import cate.game.play.config.PlayCfgArgs;
import cate.game.play.proce.action.ctx.TimeActionCtx;
import cate.game.play.proce.move.MoveCtx;
import cate.game.play.skill.passive.PassiveHandler;

/**
 * 效果1：释放“水晶净化”无视控制，50%概率随机净化1名携带负面状态的友方单位
 * 效果2：“水晶净化”治疗系数随机提升5~25%，溢出治疗量转化为护盾，持续2回合，释放后提升除自身外3个友方目标12%伤害加深2回合
 */
public class 水晶马卡龙灵器PH extends PassiveHandler {


	private String 技能标签;

	private int 驱散概率;

	private double 波动下限;

	private double 波动上限;

	//技能标签=水晶净化&驱散概率=5000
	// &波动下限=500&波动上限=2500
	@Override
	public void parse(String code) {
		PlayCfgArgs args = new PlayCfgArgs(code);
		技能标签 = args.get("技能标签");
		驱散概率 = args.getInt("驱散概率", 0);
		波动下限 = args.getDouble("波动下限", 0d);
		波动上限 = args.getDouble("波动上限", 0d);
	}

	@Override
	public void beforeOwnerMove(MoveCtx move, TimeActionCtx action) {
		if (move.getSkill().cfg.containTag(技能标签)) {
			move.getSkill().param.setIgnCtrlMove(true);
			if (波动下限 > 0 && 波动上限 > 0) {
				double coeff = 波动下限 + Math.random() * (波动上限 - 波动下限);
				move.getSkill().param.addHpCfgByCoeff(coeff);
			}
		}
	}

	@Override
	public void onOwnerMoveDone(MoveCtx move, TimeActionCtx action) {
		if (!XT.chance(驱散概率)) {
			return;
		}
		if (!move.getSkill().cfg.containTag(技能标签)) {
			return;
		}
		skill.owner.getFightTeam().getFriends(skill.owner).stream().filter(f -> f.buff.containBad()).findFirst().ifPresent(target -> target.buff.tryDispelBad(action));
	}
}
